/* SPDX-License-Identifier: GPL-2.0+ */

/*
 * Copyright (C) 2017 Armadeus Systems
 */

/* Environment is stored in the eMMC boot partition */

env_version=100
consoledev=ttymxc0
board_name=opos6ul
fdt_addr=0x88000000
fdt_high=0xffffffff
fdt_name=opos6uldev
initrd_high=0xffffffff
ip_dyn=yes
stdin=serial
stdout=serial
stderr=serial
mmcdev=0
mmcpart=2
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait
kernelimg=opos6ul-linux.bin
splashpos=0,0
splashimage=CONFIG_SYS_LOAD_ADDR
videomode=video=ctfb:x:800,y:480,depth:18,pclk:33033,le:96,ri:96,up:20,lo:21,hs:64,vs:4,sync:0,vmode:0
check_env=if test -n ${flash_env_version};
	then env default env_version;
	else env set flash_env_version ${env_version}; env save;
	fi;
	if itest ${flash_env_version} != ${env_version}; then
		echo "*** Warning - Environment version
		 change suggests: run flash_reset_env; reset";
		env default flash_reset_env;
	else exit; fi; 
flash_reset_env=env default -f -a && saveenv &&
	echo Environment variables erased!
download_uboot_spl=tftpboot ${loadaddr} ${board_name}-u-boot.spl
flash_uboot_spl=
	if mmc dev 0 1; then
		setexpr sz ${filesize} / 0x200;
		setexpr sz ${sz} + 1;
		if mmc write ${loadaddr} 0x2 ${sz}; then
			echo Flashing of U-Boot SPL succeed;
		else echo Flashing of U-Boot SPL failed;
		fi;
	fi;
download_uboot_img=tftpboot ${loadaddr} ${board_name}-u-boot.img
flash_uboot_img=
	if mmc dev 0 1; then
		setexpr sz ${filesize} / 0x200;
		setexpr sz ${sz} + 1;
		if mmc write ${loadaddr} 0x8a ${sz}; then
			echo Flashing of U-Boot image succeed;
		else echo Flashing of U-Boot image failed;
		fi;
	fi;
update_uboot=run download_uboot_spl flash_uboot_spl
	download_uboot_img flash_uboot_img
download_kernel=tftpboot ${loadaddr} ${kernelimg}
flash_kernel=
	if ext4write mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${kernelimg} ${filesize}; then
		echo kernel update succeed;
		else echo kernel update failed;
	fi;
update_kernel=run download_kernel flash_kernel
download_dtb=tftpboot ${fdt_addr} imx6ul-${fdt_name}.dtb
flash_dtb=
	if ext4write mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/imx6ul-${fdt_name}.dtb ${filesize}; then
		echo dtb update succeed;
		else echo dtb update in failed;
	fi;
update_dtb=run download_dtb flash_dtb
download_rootfs=tftpboot ${loadaddr} ${board_name}-rootfs.ext4
flash_rootfs=
	if mmc dev 0 0; then
		setexpr nbblocks ${filesize} / 0x200;
		setexpr nbblocks ${nbblocks} + 1;
		if mmc write ${loadaddr} 0x40800 ${nbblocks}; then
			echo Flashing of rootfs image succeed;
		else echo Flashing of rootfs image failed;
		fi;
	fi;
update_rootfs=run download_rootfs flash_rootfs
flash_failsafe=
	if mmc dev 0 0; then
		setexpr nbblocks ${filesize} / 0x200;
		setexpr nbblocks ${nbblocks} + 1;
		if mmc write ${loadaddr} 0x800 ${nbblocks}; then
			echo Flashing of rootfs image in failsafe partition succeed;
		else echo Flashing of rootfs image in failsafe partition failed;
		fi;
	fi;
update_failsafe=run download_rootfs flash_failsafe
download_userdata=tftpboot ${loadaddr} ${board_name}-user_data.ext4
flash_userdata=
	if mmc dev 0 0; then
		setexpr nbblocks ${filesize} / 0x200;
		setexpr nbblocks ${nbblocks} + 1;
		if mmc write ${loadaddr} 0 ${nbblocks}; then
			echo Flashing of user_data image succeed;
		else echo Flashing of user_data image failed;
		fi;
	fi;
update_userdata=run download_userdata flash_userdata; mmc rescan
erase_userdata=
	if mmc dev 0 0; then
		echo Erasing eMMC User Data partition, no way out...;
		mw ${loadaddr} 0 0x200000;
		mmc write ${loadaddr} 0 0x1000;
		mmc write ${loadaddr} 0x800 0x1000;
		mmc write ${loadaddr} 0x40800 0x1000;
		mmc write ${loadaddr} 0x440800 0x1000;
	fi;
	mmc rescan
update_all=run update_rootfs update_uboot
initargs=setenv bootargs console=${consoledev},${baudrate} ${extrabootargs}
addipargs=setenv bootargs ${bootargs}
	ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off
addmmcargs=setenv bootargs ${bootargs} root=${mmcroot}
	rootfstype=${mmcrootfstype}
emmcboot=run initargs; run addmmcargs;
	load mmc ${mmcdev}:${mmcpart} ${loadaddr} /boot/${kernelimg} &&
	load mmc ${mmcdev}:${mmcpart} ${fdt_addr} /boot/imx6ul-${fdt_name}.dtb &&
	bootz ${loadaddr} - ${fdt_addr};
emmcsafeboot=setenv mmcpart 1; setenv mmcroot /dev/mmcblk0p1 ro; run emmcboot;
addnfsargs=setenv bootargs ${bootargs} root=/dev/nfs rw
	nfsroot=${serverip}:${rootpath}
nfsboot=run initargs; run addnfsargs addipargs;
	nfs ${loadaddr} ${serverip}:${rootpath}/boot/${kernelimg} &&
	nfs ${fdt_addr} ${serverip}:${rootpath}/boot/imx6ul-${fdt_name}.dtb &&
	bootz ${loadaddr} - ${fdt_addr};
